package com.wl.mapper;

import com.wl.pojo.UserFace;
import com.wl.pojo.Users;
import com.wl.pojo.model.UserToken;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * @program: treeHole
 * @author: 吴磊
 * @create: 2021-07-06 18:14
 */
public interface UsersMapper {
    /**
     * 插入人脸
     *
     * @param userFace
     * @return
     */
    Integer insertFace(UserFace userFace);

    /**
     * 更新人脸
     *
     * @param userFace
     * @return
     */
    Integer updateFace(UserFace userFace);

    /**
     * 获取全部的人脸特征
     *
     * @return
     */
    List<UserFace> getAllUserFace();

    /**
     * 判断人脸特征是否已经存在
     *
     * @param userId
     * @return
     */
    String getUserFaceIdByUserId(@Param("userId") String userId);

    /**
     * 删除用户
     *
     * @param userId
     * @return
     */
    Integer deleteUser(@Param("userId") String userId);

    /**
     * 获取所有用户的数量
     *
     * @param role
     * @return
     */
    Integer getAllUserCount(@Param("role") String role);

    /**
     * 获取所有用户
     *
     * @param map
     * @return
     */
    List<Users> getAllUser(Map<String, Object> map);

    /**
     * 管理员登录
     *
     * @param userName
     * @param passWord
     * @return
     */

    Users adminLogin(@Param("userName") String userName, @Param("passWord") String passWord);

    /**
     * 通过手机号或邮箱判断是否存在用户(登录用)
     *
     * @param userTelPhoneOrEmail
     * @param userPassword
     * @return
     */
    Users getUserByUserTelPhoneAndPwd(@Param("userTelPhoneOrEmail") String userTelPhoneOrEmail,
                                      @Param("userPassword") String userPassword);

    /**
     * 通过手机号或者用户邮箱获取用户（发送验证码用）
     *
     * @param userTelPhone
     * @return
     */
    Users getUserByUserTelPhoneOrUserEmail(@Param("userTelPhone") String userTelPhone);

    /**
     * 插入用户
     *
     * @param users
     * @return
     */
    Integer insertUser(Users users);

    /**
     * 更新用户数据
     *
     * @param users
     * @return
     */
    Integer updateUser(Users users);

    /**
     * 通过用户Id获取用户
     *
     * @param userId
     * @return
     */
    Users getUserById(@Param("userId") String userId);

    /**
     * 评论时候用，通过用户Id获得用户简要的信息
     *
     * @param userId
     * @return
     */
    UserToken getUserTokenById(@Param("userId") String userId);

    /**
     * 通过用户Id获取用户密码
     *
     * @param userId
     * @return
     */
    @Select("select user_password from tree_hole.users where user_id = #{userId}")
    String getUserPwdByUserId(@Param("userId") String userId);
}
